A circuit arrangement for processing data essentially comprises a memory and an arithmetic logic unit. A data word is stored at an address in the memory. In order for it to be possible to process a data word in the arithmetic logic unit, the data word must be loaded into the arithmetic logic unit from the memory. After an address which was generated by the arithmetic logic unit has been transmitted to the memory, the data word stored at the corresponding location is loaded into the arithmetic logic unit from the memory. An address bus and a data bus, to which the arithmetic logic unit and the memory are coupled, are usually provided for the purpose of transmitting addresses and data.
One possible way of protecting the data in the memory area from accidental data changes and deliberate manipulation is to use redundant information about each data word, which information is stored together with the latter at the same address.
The redundant information is generally in the form of a check word and comprises a plurality of bits which are generated, for example, during error-identifying encoding and are stored together with the data word. The simplest form of error-identifying encoding is an additional parity bit that provides information about whether a data word contains an even or odd number of one of the two bit states. This makes it possible to identify an odd number of errors but without being able to locate the errors within the data word.
Providing further check bits and using suitable error-identifying encoding make it possible to improve the accuracy of error identification.
When using so-called error-correcting codes, it is also possible to locate these errors and also correct them by inverting the relevant bits. To this end, a check word is generated again from the data word and its deviation from the check word that is already present can be used to infer the errors and their position.
Error-correcting encoding has hitherto been used in circuit arrangements only to detect defective data in the memory. To this end, the data word requested by the arithmetic logic unit together with the corresponding check word in the memory are checked for errors by an encoding unit. Any possible errors may be indicated or, when using error-correcting encoding, may be corrected before being loaded into the arithmetic logic unit.
The disadvantage of this refinement that has been used hitherto is that it is used to protect only the memory (by detection and error correction) from the effects of possible manipulation.